package com.bf.electroplating.util;

import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;

public class MultipartFileUtils {

    /**
     * 将字节数组转换为 MultipartFile
     * @param fileBytes 字节数组
     * @param fileName 文件名
     * @param contentType 文件类型
     * @return MultipartFile 对象
     */
    public static MultipartFile convert(byte[] fileBytes, String fileName, String contentType) {
        return new MockMultipartFile(
                fileName,
                fileName,
                contentType,
                fileBytes
        );
    }

    /**
     * 将文件转换为 MultipartFile
     * @param file 文件
     * @return MultipartFile 对象
     * @throws IOException 文件读取异常
     */
    public static MultipartFile convert(File file) throws IOException {
        byte[] fileBytes = new byte[(int) file.length()];
        try (FileInputStream fis = new FileInputStream(file)) {
            fis.read(fileBytes);
        }
        return convert(
                fileBytes,
                file.getName(),
                getContentType(file.getName())
        );
    }

    /**
     * 根据文件名推断内容类型
     */
    private static String getContentType(String fileName) {
        if (fileName.endsWith(".jpg") || fileName.endsWith(".jpeg")) {
            return "image/jpeg";
        } else if (fileName.endsWith(".png")) {
            return "image/png";
        } else if (fileName.endsWith(".pdf")) {
            return "application/pdf";
        }
        return "application/octet-stream";
    }
}
